package com.momo.mapper.dao;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.momo.mapper.dataobject.AclModuleDO;
import com.momo.mapper.mapper.AclModuleDOMapper;

/**
* The Table SYS_ACL_MODULE.
* 注意:此结构有系统生成,禁止手工修改,以免被覆盖,请通过dalgen生成
* 权限模块表   引入权限模块就可以很容易把菜单层级定义出来，每个菜单项下面有哪些功能就可以在权限模块下面定义权限点，然后就可以根据每个人分配到的权限生成不同的基于权限的菜单
*/
@Repository
public class AclModuleDAO{

    @Autowired
    private AclModuleDOMapper aclModuleDOMapper;

    /**
     * desc:插入表:SYS_ACL_MODULE.<br/>
     * descSql =  SELECT LAST_INSERT_ID() INSERT INTO SYS_ACL_MODULE( SYS_ACL_MODULE_PARENT_ID ,SYS_ACL_PERMISSION_TYPE ,DEL_FLAG ,CREATE_BY ,UPDATE_BY ,SYS_ACL_MODULE_CODE ,SYS_ACL_MODULE_ICON ,SYS_ACL_MODULE_NAME ,SYS_ACL_MODULE_UUID ,SYS_ACL_MODULE_LEVEL ,SYS_ACL_MODULE_REMARK ,SYS_ACL_MODULE_SEQ ,CREATE_TIME ,UPDATE_TIME )VALUES( #{sysAclModuleParentId,jdbcType=BIGINT} ,#{sysAclPermissionType,jdbcType=BIGINT} ,#{delFlag,jdbcType=CHAR} ,#{createBy,jdbcType=VARCHAR} ,#{updateBy,jdbcType=VARCHAR} ,#{sysAclModuleCode,jdbcType=VARCHAR} ,#{sysAclModuleIcon,jdbcType=VARCHAR} ,#{sysAclModuleName,jdbcType=VARCHAR} ,#{sysAclModuleUuid,jdbcType=VARCHAR} ,#{sysAclModuleLevel,jdbcType=VARCHAR} ,#{sysAclModuleRemark,jdbcType=VARCHAR} ,#{sysAclModuleSeq,jdbcType=INTEGER} ,#{createTime,jdbcType=TIMESTAMP} ,#{updateTime,jdbcType=TIMESTAMP} )
     * @param entity entity
     * @return int
     */
    public int insert(AclModuleDO entity){
        return aclModuleDOMapper.insert(entity);
    }
    /**
     * desc:更新表:SYS_ACL_MODULE.<br/>
     * descSql =  UPDATE SYS_ACL_MODULE SET SYS_ACL_MODULE_PARENT_ID = #{sysAclModuleParentId,jdbcType=BIGINT} ,SYS_ACL_PERMISSION_TYPE = #{sysAclPermissionType,jdbcType=BIGINT} ,DEL_FLAG = #{delFlag,jdbcType=CHAR} ,CREATE_BY = #{createBy,jdbcType=VARCHAR} ,UPDATE_BY = #{updateBy,jdbcType=VARCHAR} ,SYS_ACL_MODULE_CODE = #{sysAclModuleCode,jdbcType=VARCHAR} ,SYS_ACL_MODULE_ICON = #{sysAclModuleIcon,jdbcType=VARCHAR} ,SYS_ACL_MODULE_NAME = #{sysAclModuleName,jdbcType=VARCHAR} ,SYS_ACL_MODULE_UUID = #{sysAclModuleUuid,jdbcType=VARCHAR} ,SYS_ACL_MODULE_LEVEL = #{sysAclModuleLevel,jdbcType=VARCHAR} ,SYS_ACL_MODULE_REMARK = #{sysAclModuleRemark,jdbcType=VARCHAR} ,SYS_ACL_MODULE_SEQ = #{sysAclModuleSeq,jdbcType=INTEGER} ,CREATE_TIME = #{createTime,jdbcType=TIMESTAMP} ,UPDATE_TIME = #{updateTime,jdbcType=TIMESTAMP} WHERE ID = #{id,jdbcType=BIGINT}
     * @param entity entity
     * @return int
     */
    public int update(AclModuleDO entity){
        return aclModuleDOMapper.update(entity);
    }
    /**
     * desc:根据主键删除数据:SYS_ACL_MODULE.<br/>
     * descSql =  DELETE FROM SYS_ACL_MODULE WHERE ID = #{id,jdbcType=BIGINT}
     * @param id id
     * @return int
     */
    public int deleteById(Long id){
        return aclModuleDOMapper.deleteById(id);
    }
    /**
     * desc:根据主键获取数据:SYS_ACL_MODULE.<br/>
     * descSql =  SELECT * FROM SYS_ACL_MODULE WHERE ID = #{id,jdbcType=BIGINT}
     * @param id id
     * @return AclModuleDO
     */
    public AclModuleDO getById(Long id){
        return aclModuleDOMapper.getById(id);
    }
    /**
     * desc:checkExists.<br/>
     * descSql =  select count(id) from sys_acl_module AND sys_acl_module_name=#{sysAclModuleName,jdbcType=VARCHAR} AND sys_acl_module_parent_id=#{sysAclModuleParentId,jdbcType=BIGINT} AND id!=#{id,jdbcType=BIGINT} 
     * @param id id
     * @param sysAclModuleParentId sysAclModuleParentId
     * @param sysAclModuleName sysAclModuleName
     * @return int
     */
    public int checkExists(Long id,Long sysAclModuleParentId,String sysAclModuleName){
        return aclModuleDOMapper.checkExists(id, sysAclModuleParentId, sysAclModuleName);
    }
    /**
     * desc:selectByPrimaryKey.<br/>
     * descSql =  select id, sys_acl_module_uuid, sys_acl_module_name, sys_acl_module_code, sys_acl_module_parent_id, sys_acl_module_level, sys_acl_module_seq, sys_acl_module_icon, sys_acl_permission_type, sys_acl_module_remark, sys_ac_modulel_status, del_flag, create_by, create_time, update_time, update_by from sys_acl_module where id=#{id,jdbcType=BIGINT}
     * @param id id
     * @return AclModuleDO
     */
    public AclModuleDO selectByPrimaryKey(Long id){
        return aclModuleDOMapper.selectByPrimaryKey(id);
    }
    /**
     * desc:selectByUUID.<br/>
     * descSql =  select id, sys_acl_module_uuid, sys_acl_module_name, sys_acl_module_code, sys_acl_module_parent_id, sys_acl_module_level, sys_acl_module_seq, sys_acl_module_icon, sys_acl_permission_type, sys_acl_module_remark, sys_ac_modulel_status, del_flag, create_by, create_time, update_time, update_by from sys_acl_module where sys_acl_module_uuid=#{sys_acl_module_uuid,jdbcType=VARCHAR}
     * @param sys_acl_module_uuid sys_acl_module_uuid
     * @return AclModuleDO
     */
    public AclModuleDO selectByUUID(String sys_acl_module_uuid){
        return aclModuleDOMapper.selectByUUID(sys_acl_module_uuid);
    }
    /**
     * desc:updateByPrimaryKeySelective.<br/>
     * descSql =  update sys_acl_module sys_acl_module_uuid = #{sysAclModuleUuid,jdbcType=VARCHAR}, sys_acl_module_name = #{sysAclModuleName,jdbcType=VARCHAR}, sys_acl_module_code = #{sysAclModuleCode,jdbcType=VARCHAR}, sys_acl_module_parent_id = #{sysAclModuleParentId,jdbcType=BIGINT}, sys_acl_module_level = #{sysAclModuleLevel,jdbcType=VARCHAR}, sys_acl_module_seq = #{sysAclModuleSeq,jdbcType=INTEGER}, sys_acl_module_icon = #{sysAclModuleIcon,jdbcType=VARCHAR}, sys_acl_permission_type = #{sysAclPermissionType,jdbcType=BIGINT}, sys_acl_module_remark = #{sysAclModuleRemark,jdbcType=VARCHAR}, sys_ac_modulel_status = #{sysAcModulelStatus,jdbcType=CHAR}, del_flag = #{delFlag,jdbcType=CHAR}, create_by = #{createBy,jdbcType=VARCHAR}, create_time = #{createTime,jdbcType=TIMESTAMP}, update_time = #{updateTime,jdbcType=TIMESTAMP}, update_by = #{updateBy,jdbcType=VARCHAR}, where id = #{id,jdbcType=BIGINT}
     * @param entity entity
     * @return int
     */
    public int updateByPrimaryKeySelective(AclModuleDO entity){
        return aclModuleDOMapper.updateByPrimaryKeySelective(entity);
    }
    /**
     * desc:insertSelective.<br/>
     * descSql =  SELECT LAST_INSERT_ID() insert into sys_acl_module id, sys_acl_module_uuid, sys_acl_module_name, sys_acl_module_code, sys_acl_module_parent_id, sys_acl_module_level, sys_acl_module_seq, sys_acl_module_icon, sys_acl_permission_type, sys_acl_module_remark, sys_ac_modulel_status, del_flag, create_by, create_time, update_time, update_by, #{id,jdbcType=BIGINT}, #{sysAclModuleUuid,jdbcType=VARCHAR}, #{sysAclModuleName,jdbcType=VARCHAR}, #{sysAclModuleCode,jdbcType=VARCHAR}, #{sysAclModuleParentId,jdbcType=BIGINT}, #{sysAclModuleLevel,jdbcType=VARCHAR}, #{sysAclModuleSeq,jdbcType=INTEGER}, #{sysAclModuleIcon,jdbcType=VARCHAR}, #{sysAclPermissionType,jdbcType=BIGINT}, #{sysAclModuleRemark,jdbcType=VARCHAR}, #{sysAcModulelStatus,jdbcType=CHAR}, #{delFlag,jdbcType=CHAR}, #{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, #{updateBy,jdbcType=VARCHAR}, 
     * @param entity entity
     * @return int
     */
    public int insertSelective(AclModuleDO entity){
        return aclModuleDOMapper.insertSelective(entity);
    }
}
